Unexpected output on initializing array by using both `element-by-element` & `designated` technique

Posted by haccks on Stack Overflow See other posts from Stack Overflow or by haccks
Published on 2013-06-29T20:51:37Z Indexed on 2013/06/30 16:21 UTC
Read the original article Hit count: 114

Filed under:
|
|

C99 provides a feature to initialize arrays by using both element-by-element & designated method together as:

int a[] = {2,1,[3] = 5,[5] = 9,6,[8] = 4};

On running the code:

#include <stdio.h>

int main()
{
   int a[] = {2,1,[3] = 5,[0] = 9,4,[6] = 25};
   for(int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
          printf("%d    ",a[i]);

   return 0;
 }

(Note that Element 0 is initialized to 2 and then again initialised by designator [0] to 9) I was expecting that element 0(which is 2) will be replaced by 9(as designator [0] = 9) and hence o/p will become

   9    1   0   5   4   0   25

Unfortunately I was wrong as o/p came;

   9    4   0   5   0   0   25

Any explanation for unexpected o/p?

© Stack Overflow or respective owner

Related posts about c

    Related posts about arrays